home *** CD-ROM | disk | FTP | other *** search
- Looz 2.1 -- Ooz with List
- (and Execute)
- a
- Zoo Extractor/Lister
- by
- Rahul Dhesi
-
-
- Looz 2.1 is a Zoo archive extractor/lister/tester for computer systems
- running MS-DOS version 2.x or greater. IBM-compatibility is not a
- requirement.
-
- Looz 2.1 does not recognize all the advanced features available in current
- Zoo archives, such as long filenames and directory names. All extracted files
- go into the current directory. It can, however, extract and list all archives
- created by all currently-existing versions of Zoo.
-
- Looz can also give the directory listing of one or more Zoo archives
- (optionally showing attached comments) or test their integrity.
-
- Looz 2.1 is different from version 1.10 in the following ways: (a) It can
- execute archived files; (b) It can present a fast columnized listing of the
- contents of a zoo archive.
-
- A detailed feature summary of Looz 2.1 is near the end of this document.
-
-
- COMMAND SUMMARY
-
- The command format is:
-
- looz {lxt}[cpxf] archive[.zoo] [ file ... ] [ parameter ... ]
-
- Choose one of the command characters `l', `x', or `t', and optionally a
- modifier `c', `p', or `x'. These characters are case-sensitive. Looz ignores
- any inappropriate modifier. The valid combinations are:
-
- l list contents of archive(s)
- lc list contents of archive(s) and show attached comments
- lf list contents of archive(s) in fast multicolumn format
- x extract file(s) from archive(s)
- xp extract file(s) from archive(s), pipe to standard output
- xx extract and execute file from archive
- t test integrity of archive(s)
-
- The usual wildcard characters are accepted in both the archive name and in the
- specified filenames: ? stands for any one character and * stands for any
- sequence of zero or more characters. In addition, any filespec preceded by
- the character ^ excludes matching files. The ^ exclusion character overrides
- any other matches. (Note: ^ works only in filenames, not in the archive
- name. Also, ^ is ineffective when looking for files to execute via the xx
- command.)
-
- Wildcard matching is case-insensitive.
-
- Files extracted by `x' always go into the current directory; however, if an
- extracted file is being executed, it is extracted directly into main memory
- and never stored on disk.
-
- The information listed by `l' is: The original length in bytes of the
- archived file; the percentage by which its size decreased due to compression
- (also known as "CF" or "compression factor"); its current size as stored in
- the archive; its date and timestamps, preserved when archived; the character
- "C" if the file has an attached comment; the character "D" if it is a deleted
- file; and an MS-DOS format filename.
-
- If appropriate, a "GRAND TOTAL" line summarizes statistics for all archives
- and files that were listed.
-
- When the xx command is used, the archive name and the file name may be
- followed by parameters to be supplied to the program being executed.
-
-
- FILE EXECUTION
-
- Looz can extract and execute archived COM and EXE programs. BAT programs are
- not currently supported. A file to be executed must not be longer than 65535
- bytes.
-
- DISK AND MEMORY CONSIDERATIONS
-
- When executing an archived program, Looz itself needs about 60 kilobytes to
- perform the extraction, and enough additional memory to hold the extracted
- program. Thus if the executable program is 30 kilobytes long, there must be
- about 90 kilobytes available.
-
- However, before giving control to the program being executed, Looz removes
- itself from memory. Thus there is no space penalty for executing an archived
- file via Looz.
-
- Looz extracts the program to be executed directly into memory. Thus there is
- no need to create any temporary disk files at any time. Looz will therefore
- execute archived programs with all disks write-protected.
-
- I/O REDIRECTION
-
- When executing archived files, I/O redirection can be used normally. For
- example,
-
- looz xx \bin\run sdir \bin\*.* >>dir.lst
-
- will append the output of the command to the file dir.lst, exactly as would
- the direct execution of sdir via the command:
-
- sdir \bin\*.* >>dir.lst
-
- Pipes can also be used normally. For example:
-
- looz xx \bin\run sdir | list /s
-
- The above command will extract and execute sdir.com from the archive
- \bin\run.zoo, and feed its output to list.com. In this case, list.com must be
- found on disk. However, if list.com is also in the zoo archive, the following
- pipeline will work:
-
- looz xx \bin\run sdir | looz xx \bin\run list /s
-
- USAGE HINTS FOR ARCHIVED PROGRAMS
-
- A good way of avoiding disk fragmentation is to combine many small executable
- programs into a single zoo archive. Programs that are used only occasionally
- can be stored in compressed form. Programs that are frequently used should be
- stored uncompressed so they may be executed without any uncompression delay.
-
- It is also possible to put executable files into multiple zoo archives, and to
- specify the archive name with a wildcard. Looz will search all matching
- archive names for the specified executable file, and execute the first
- matching file found. There may, however, be a delay of a second or so while
- Looz searches for the archives on disk.
-
- Another good way of using Looz to execute archived files is via a CED
- synonym. CED is a public domain program written by Chris Dunford and is
- available from bulletin boards. (Note that while Looz will run on any MS-DOS
- system, CED requires an IBM-compatible computer system.) With CED installed
- on your system, create a CED synonym by giving a command as follows:
-
- ced syn run looz xx \bin\run
-
- This creates a new command "run" that is equivalent to typing
- "looz xx \bin\run". Executable programs may now be put in the zoo archive
- \bin\run.zoo. Now any program in this archive can be extracted and executed
- by giving the command "run program". For example, if \bin\run.zoo contains
- the program sdir.com, you can now run it by typing "run sdir" at the MS-DOS
- prompt. Parameters can be supplied as usual, so typing "run sdir \doc\*.*"
- will execute the archived copy of sdir.com exactly as if you had typed
- "sdir \doc\*.*" to MS-DOS.
-
-
- FILE EXTENSIONS
-
- Looz assumes default file extensions as follows.
-
- If no file extension is specified for the name of the archive, an extension of
- .zoo is assumed.
-
- No assumptions are made about the extension of a file to be extracted, with
- one exception: If the xx command is being used to extract and execute an
- archived file, Looz looks for files with extensions .com and .exe and executes
- the first file found whose name matches. Thus, for example, the command
-
- looz xx \bin\programs *
-
- searches the archive \bin\programs.zoo for any file matching *.com or *.exe
- executes the first such file found. Similarly the command
-
- looz xx \bin\programs show
-
- extracts and executes a file called show.com or show.exe. If the archive
- contains both show.com and show.exe, the first one encountered is executed.
-
- A program name specified for execution must not be typed with an extension.
- Thus "looz xx \bin\programs show.com" will not work.
-
-
- EXAMPLES
-
- The command
-
- looz l *r *a?b* *x* z*y ^*.c
-
- will list all archives with filenames ending with `r' and with the extension
- ".zoo". Within these archives, the only files that will be listed are:
- (a) those with names containing the characters `a' and `b' separated by any
- one character; (b) those with names containing the character `x'; (c) those
- with names beginning with `z' and ending with `y'. Note that since the dot is
- not special, the filespec "*x*" will match the names "xyz.doc", "yxz", and
- "doc.yzx". Regardless of the above, however, the pattern "^*.c" excludes all
- files matching "*.c" so they will not be listed; thus "xyz.c" is excluded by
- "^*.c", even though it matches "*x*".
-
- The command
-
- looz lc *r *a?b* *x* z*y ^*.c
-
- is identical to the above but it will also show any comments attached to
- archived files.
-
- The command
-
- looz lf *r *a?b* *x* z*y ^*.c
-
- is identical to the above but it will list filenames in five columns,
- allowing many more filenames to fit on a screen.
-
- The command
-
- looz t /new/vooz*2
-
- will test the integrity of all Zoo archives in directory "/new" that have
- names beginning with the characters `vooz' and ending with the character `2',
- and with the default extension ".zoo". Matching archives might be
- "voozexe2.zoo" and "voozsrc2.zoo".
-
- The command
-
- looz x /zoo/*l* *.c *doc ^looz.c ^looz.doc
-
- will extract all "*.c" and "*doc" files (except "looz.c" and "looz.doc") from
- all archives in the directory "/zoo" whose names contain the character `l',
- with a default extension of ".zoo" assumed in the archive names.
-
- The command
-
- looz xp /zoo/*l* *.c *doc ^looz.c ^looz.doc
-
- is identical to the above except that extracted data are piped to standard
- output (normally the screen) and may be redirected to a file or device (e.g.
- the printer) with the MS-DOS redirection characters ">" or ">>".
-
- The command
-
- looz xx /bin/r* *dir* *.doc
-
- will search all zoo archives matching the name /bin/r*.zoo, and look in these
- for all files matching *dir*.com and *dir*.exe, and execute the first such
- file. Regardless of how many archive names and file names match the supplied
- pattern, the xx command will only cause the execution of the first file found
- with a matching name. The string "*.doc" will be supplied as an argument to
- the executed program so that, for example, the result might be equivalent to
- typing "sdir *.doc" at the MS-DOS prompt.
-
- The command
-
- looz xx run sdir /a *.doc
-
- will search the archive run.zoo for a file called sdir.com or sdir.exe. If
- found, this file will be executed, with the parameters /a and *.doc being
- supplied to it. The effect will the identical to typing
-
- sdir /a *.doc
-
- at the MS-DOS prompt.
-
-
- FEATURE SUMMARY
-
- The table below lists differences and similarities between Ooz 1.30, Looz
- 1.01, and Looz 2.1. (Symbols: "n/a" means "not applicable"; "[1]" means
- "see item 1 in Notes below".)
-
- Ooz 1.30 Looz 1.01 Looz 2.1
- -------- --------- ---------
-
- size on disk 10K 10K 10K
-
- memory required 50K 96K 60K
- for extraction
-
- extract archive yes yes yes
-
- execute archived file no no yes
-
- execute n/a n/a no
- deleted file
-
- extract no yes [1] yes [1]
- deleted files
-
- preserve file timestamp yes yes yes
- when extracting
-
- pipe extracted data no yes yes
- to standard output
-
- list archive no yes yes
-
- multicolumn listing n/a no yes
-
- flag deleted files n/a yes yes
-
- flag files that have n/a yes yes
- comments
-
- list comments n/a yes yes
-
- test archive no yes yes
-
- wildcards in no yes yes
- archive name
-
- wildcards in yes yes yes
- filenames
-
- character ranges yes no no
- in filenames
-
- file exclusion with ^ no yes yes [2]
-
- dot is special
- in wildcards yes no [3] no [3]
-
- can aborting with control C no [4] yes yes
- leave behind a partially-
- extracted file?
-
- corrects filename syntax no yes yes [5]
- so files with invalid
- names can be extracted
-
- ----------
- NOTES
-
- 1. Deleted files are also extracted. If an archived file exists occurs
- twice, perhaps both in deleted and not deleted form, answer "yes" or "no" to
- the "Overwrite?" prompt according as you want the second or the first
- occurrence of the file.
-
- 2. Filename exclusion does not apply to a filename specified for execution.
-
- 3. The dot IS special in wildcards in the archive name but is not special in
- wildcards in filenames for selection of archived files.
-
- 4. Except on rare occasions.
-
- 5. Looz 1.01 incorrectly transformed an underscore in a filename into an "r"
- during extraction. Later versions handle underscores normally, like any other
- legal filename character.
-
-
- WARNING
-
- Looz's wildcard handling is not identical to that of MS-DOS. The dot is not
- special in filenames, so `*' will match all archived files but '*.*' will
- not.
-
- Please double-check to make sure the correct files are matched.
-
-
- ACKNOWLEDGEMENT
-
- Thanks are due to Michael E. Devore for hearing my request for information
- about how to use the relocation table in EXE files and responding with a
- nicely-written assembly language program. I wrote my relocation routine in C,
- but his program was very useful in helping me figure out how to perform the
- relocation.
-
- Looz 2.1 was written using Borland's Turbo C version 1.0 and the Microsoft
- Macro Assembler version 4.00.
-
- -- Rahul Dhesi 1987/08/08
-